<?php
require_once $_SERVER[DOCUMENT_ROOT].'/clientes/src/lib/db/ConnectionDB.php';

class Mapa{

	//----------------------------------------------------------------------------
	//Delimitador de la tabla
	//----------------------------------------------------------------------------
	
	/**
	 * El constrains de la clase
	 */
	private static $table_nombre = "mapa";
	private static $constrains = array(	array("id",				ConnectionDB::INT,				ConnectionDB::NOT_NULL, ConnectionDB::PRIMARY_KEY,	ConnectionDB::NO_DEFAULT_VALUE), 	//El id
										array("nombre",         ConnectionDB::STRING_COMMENT,	ConnectionDB::NOT_NULL,	ConnectionDB::INDEX_KEY,	ConnectionDB::DEFAULT_VALUE),	//El id del destinatario
										array("link",        ConnectionDB::STRING_COMMENT,	ConnectionDB::NOT_NULL,	ConnectionDB::NONE_KEY, 	ConnectionDB::DEFAULT_VALUE),	//La descripción de la sala
										array("direccion",		ConnectionDB::STRING_COMMENT,   ConnectionDB::NOT_NULL,	ConnectionDB::NONE_KEY,		ConnectionDB::DEFAULT_VALUE));		//El mensaje

	//----------------------------------------------------------------------------
	//Atributos
	//----------------------------------------------------------------------------								
	
	/**
	 * Id del Mensaje
	 */
	private $id;
	
	/**
	 * Id de Usuario del mensaje
	 */
	private $nombre;
	/**
     *
	 * Id de Usuario del mensaje
	 */
	private $link;
	
	/**
	 * Id de lo comentado
	 */
	private $direccion;

	/**
	 * V�nculo con la Tabla en la Base de Datos
	 */	
	private $tabla;
	
	//----------------------------------------------------------------------------
	//M�todo constructor
	//----------------------------------------------------------------------------
	
	public function __construct($id = 0, $nombre = "", $link = "", $direccion = 0){
		$this->id = $id;
        $this->nombre = $nombre;
        $this->link = $link;
		$this->direccion = $direccion;

		//Realiza lo debido a la base de datos
		$connection = new ConnectionDB($_SESSION['USER_NAME'],$_SESSION['USER_PASS']);
		$this->tabla = $connection->get_table(Mapa::$table_nombre, Mapa::$constrains);
	}
	
	//----------------------------------------------------------------------------
	//Getters y Setters B�sicos de la Clase
	//----------------------------------------------------------------------------

	/**
	 * Retorna el Id de la instancia
	 */
	public function get_id(){
		return $this->id;
	}
		
	/**
	 *Retorna el id del Usuario del mensaje
	 */
	public function get_direccion(){
		return $this->direccion;
	}

    /**
	 *Modifica la cantidad de direccion en la sala
	 */
	public function set_direccion($direccion){
		$this->direccion = $direccion;
	}

	/**
	 *Retorna el id del usuario comentado
	 */
	public function get_nombre(){
		return $this->nombre;
	}
	/**
     *
	 *Retorna el id del usuario comentado
	 */
	public function get_link(){
		return $this->link;
	}
			
	//----------------------------------------------------------------------------
	//Busqueda en la Base de Datos
	//----------------------------------------------------------------------------
	
	public static function search_by_id($id){
		$mensaje = new Mapa();
		
		$params = array(array("id", $id));
		$response_id = 	$mensaje->tabla->get_value_by_field("id", $params);
		
		$answer = array();
		
		foreach($response_id as $i => $value){
			$user = new Mapa($response_id[$i]);
			$user->update_from_database_by_id();
			
			$answer[] = $user;
		}
		return $answer;
	}
	
	//----------------------------------------------------------------------------
	//Actualizaci�n con la Base de Datos
	//----------------------------------------------------------------------------
	
	/**
	 * Actualiza la informaci�n en la Base de Datos
	 */
	public function update_database(){		
		//Actualiza los valores
    	$parametros = array(array("nombre",		$this->nombre),
                            array("link",$this->link),
                            array("direccion",$this->direccion));
		$this->tabla->update($parametros);
        $this->id = $this->tabla->get_id();
	}
	
	/**
	 * Actualiza la informaci�n desde la Base de Datos seg�n el id
	 */
	public function update_from_database_by_id(){
		$params = array(array("id",$this->id));
		
		//Toma los valores
		$nombre =       $this->tabla->get_value_by_field("nombre",      $params);
		$link =	$this->tabla->get_value_by_field("link",	$params);
		$direccion =     $this->tabla->get_value_by_field("direccion",    $params);
		
		$this->nombre = $nombre[0];
		$this->link = $link[0];
		$this->direccion = $direccion[0];
	}
}
?>